﻿using System;
using System . Runtime . InteropServices;
using System . Runtime . InteropServices.ComTypes;

// from control.h

[ComImport,
Guid("56a868b4-0ad4-11ce-b03a-0020af0ba770"),
// The control.h header says it is a dual
InterfaceType(ComInterfaceType.InterfaceIsDual)]
// when see IDispatch use , MarshalAs(UnmanagedType.IDispatch) attribute
interface IVideoWindow // : IDispatch
{
   [PreserveSig]
   int put_Caption(string Caption);

   [PreserveSig]
   int get_Caption([Out] out string Caption);

   [PreserveSig]
   int put_WindowStyle(int WindowStyle);

   [PreserveSig]
   int get_WindowStyle([Out] out int WindowStyle);

   [PreserveSig]
   int put_WindowStyleEx(int WindowStyleEx);

   [PreserveSig]
   int get_WindowStyleEx([Out] out int WindowStyleEx);

   [PreserveSig]
   int put_AutoShow(int AutoShow);

   [PreserveSig]
   int get_AutoShow([Out] out int AutoShow);

   [PreserveSig]
   int put_WindowState(int WindowState);

   [PreserveSig]
   int get_WindowState([Out] out int WindowState);

   [PreserveSig]
   int put_BackgroundPalette(int BackgroundPalette);

   [PreserveSig]
   int get_BackgroundPalette([Out] out int BackgroundPalette);

   [PreserveSig]
   int put_Visible(int Visible);

   [PreserveSig]
   int get_Visible([Out] out int Visible);

   [PreserveSig]
   int put_Left(int Left);

   [PreserveSig]
   int get_Left([Out] out int Left);

   [PreserveSig]
   int put_Width(int Width);

   [PreserveSig]
   int get_Width([Out] out int Width);

   [PreserveSig]
   int put_Top(int Top);

   [PreserveSig]
   int get_Top([Out] out int Top);

   [PreserveSig]
   int put_Height(int Height);

   [PreserveSig]
   int get_Height([Out] out int Height);

   [PreserveSig]
   int put_Owner(IntPtr Owner);

   [PreserveSig]
   int get_Owner([Out] out IntPtr Owner);

   [PreserveSig]
   int put_MessageDrain(IntPtr Drain);

   [PreserveSig]
   int get_MessageDrain([Out] out IntPtr Drain);

   [PreserveSig]
   int get_BorderColor([Out] out int Color);

   [PreserveSig]
   int put_BorderColor(int Color);

   [PreserveSig]
   int get_FullScreenMode([Out] out int FullScreenMode);

   [PreserveSig]
   int put_FullScreenMode(int FullScreenMode);

   [PreserveSig]
   int SetWindowForeground(int Focus);

   [PreserveSig]
   int NotifyOwnerMessage(IntPtr hwnd, int Msg, IntPtr wParam, IntPtr lParam);

   [PreserveSig]
   int SetWindowPosition(int Left, int Top, int Width, int Height);

   [PreserveSig]
   int GetWindowPosition([Out] out int Left, [Out] out int Top, [Out] out int Width, [Out] out int Height);

   [PreserveSig]
   int GetMinIdealImageSize([Out] out int Width, [Out] out int Height);

   [PreserveSig]
   int GetMaxIdealImageSize([Out] out int Width, [Out] out int Height);

   [PreserveSig]
   int GetRestorePosition([Out] out int Left, [Out] out int Top, [Out] out int Width, [Out] out int Height);

   [PreserveSig]
   int HideCursor(int HideCursor);

   [PreserveSig]
   int IsCursorHidden([Out] out int CursorHidden);
}
